package com.yonyou.crm.bpub.template.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yonyou.crm.bpub.template.entity.*;
import com.yonyou.crm.sys.modules.service.BiztypeBizServiceImpl;

@Service
public class OpportunityTemplate extends BaseTemplates {
	
	@Autowired
	BiztypeBizServiceImpl biztypeService;

	@Override
	public ArrayList<TemplatesHeaderVO> getHeader() {
		return getHeaderList();
	}

	@Override
	public ArrayList<TemplatesBodyVO> getBody() {
		return getBodyList();
	}

	@Override
	public ArrayList<TemplatesTriggerVO> getTrigger() {
		// TODO 自动生成的方法存根
		return null;
	}

	@Override
	public ArrayList<TemplatesFilterVO> getFilter() {
		ArrayList<TemplatesFilterVO> filter = new ArrayList<>();
		TemplatesFilterVO filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("customerId");
		filter.add(filterItem);
		
		filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("ownerUserId");
		filter.add(filterItem);
		
		filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("relUsers");
		filter.add(filterItem);
		
		filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("productId");
		filter.add(filterItem);
		
		filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("productTypeId");
		filter.add(filterItem);
		
		filterItem = new TemplatesFilterVO();
		filterItem.setItemkey("brandId");
		filter.add(filterItem);

		return filter;
	}
	
	private ArrayList<TemplatesHeaderVO> getHeaderList() {
		ArrayList<TemplatesHeaderVO> headerList = new ArrayList<TemplatesHeaderVO>();
		
		TemplatesHeaderVO headerVO = new TemplatesHeaderVO();
		headerVO.setHeadername("基本信息");
		headerVO.setStyle("");
		headerVO.setSpread("N");
		
		ArrayList<TemplatesItemVO> itemList = new ArrayList<TemplatesItemVO>();
		
		TemplatesItemVO item = new TemplatesItemVO();
		item.setItemkey("id");
		item.setItemname("ID");
		item.setItemtype("decimal");
		item.setIseditable("N");
		item.setIsrequired("Y");//TODO
		item.setIsdisplay("N");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("name");
		item.setItemname("商机名称");
		item.setItemtype("singlelinetext");
		item.setIseditable("Y");
		item.setIsrequired("Y");//TODO
		item.setIsdisplay("Y");
		item.setMaxlenth("100");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("customerId");
		item.setItemname("客户名称");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("Y");//TODO
		item.setIsdisplay("Y");
		item.setReferto("account");//TODO需要约定
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("saleStage");
		item.setItemname("商机阶段");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setReferto("oppstage");//TODO需要约定
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("winProbability");
		item.setItemname("赢单概率");
		item.setItemtype("singlelinetext");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setMaxlenth("100");
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("expectSignTime");
		item.setItemname("预计签单时间");
		item.setItemtype("date");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("expectSignMoney");
		item.setItemname("预计签单金额");
		item.setItemtype("money");
		item.setIseditable("Y");
		item.setIsrequired("N");
		item.setPrecision("6");
		item.setMaxlenth("30");
		itemList.add(item);

		headerVO.setItemlist(itemList);
		headerList.add(headerVO);
		
		// 更多信息
		headerVO = new TemplatesHeaderVO();
		headerVO.setHeadername("更多信息");
		headerVO.setStyle("");
		headerVO.setSpread("Y");
		
		itemList = new ArrayList<TemplatesItemVO>();
		
		item = new TemplatesItemVO();
		item.setItemkey("ownerUserId");
		item.setItemname("负责人");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setIsmultiselect("N");
		item.setReferto("user");//TODO需要约定
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("relUsers");
		item.setItemname("参与人");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setReferto("user");//TODO需要约定
		item.setIsmultiselect("Y");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("type");
		item.setItemname("商机类型");
		item.setItemtype("enum");
		item.setIseditable("Y");
		item.setIsrequired("N");
		item.setIsdisplay("Y");
		//TODO获取商机类型
		Map<String, Object> biztype = biztypeService.getModuleBiztypesForCurrentRole("Opportunity");
		List<Map<String, Object>> biztypeList = (List<Map<String, Object>>)biztype.get("biztypeList");
		
		ArrayList<TemplatesEnumVO> enumlist = new ArrayList<TemplatesEnumVO>();
		TemplatesEnumVO enumVO;
		for (Map<String, Object> biztypeItem : biztypeList) {
			String id = String.valueOf(biztypeItem.get("key"));
			String name = String.valueOf(biztypeItem.get("title"));
			enumVO = new TemplatesEnumVO(id, name);
			enumlist.add(enumVO);
		}
		item.setEnumdatalist(enumlist);
		itemList.add(item);
		
		/*
		TemplatesEnumVO enumVO = new TemplatesEnumVO("1","普通商机");
		enumlist.add(enumVO);
		enumVO = new TemplatesEnumVO("2","大项目商机");
		enumlist.add(enumVO);
		item.setEnumdatalist(enumlist);
		itemList.add(item);
	    */
		item = new TemplatesItemVO();
		item.setItemkey("customerBudget");
		item.setItemname("客户预算");
		item.setItemtype("money");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setPrecision("6");
		item.setMaxlenth("30");
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("createdTime");
		item.setItemname("商机日期");
		item.setItemtype("date");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		itemList.add(item);

		item = new TemplatesItemVO();
		item.setItemkey("description");
		item.setItemname("备注");
		item.setItemtype("largetext");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setMaxlenth("2000");
		itemList.add(item);
		
		headerVO.setItemlist(itemList);
		headerList.add(headerVO);

		return headerList;
	}
	
	private ArrayList<TemplatesBodyVO> getBodyList() {
		ArrayList<TemplatesBodyVO> bodyList = new ArrayList<TemplatesBodyVO>();
		
		TemplatesBodyVO bodyVO = new TemplatesBodyVO();
		bodyVO.setBodyname("产品分组1");
		bodyVO.setBodymark("product1");
		bodyVO.setStyle("");
		
        ArrayList<TemplatesItemVO> itemList = new ArrayList<TemplatesItemVO>();
		
		TemplatesItemVO item = new TemplatesItemVO();
		item.setItemkey("id");
		item.setItemname("ID");
		item.setItemtype("decimal");
		item.setIseditable("N");
		item.setIsrequired("Y");//TODO
		item.setIsdisplay("N");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("productId");
		item.setItemname("产品名称");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("Y");//TODO
		item.setIsdisplay("Y");
		item.setReferto("product");//TODO需要约定
		item.setIsmultiselect("N");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("productTypeId");
		item.setItemname("产品分类");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setReferto("producttype");//TODO需要约定
		item.setIsmultiselect("N");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("brandId");
		item.setItemname("品牌");
		item.setItemtype("refertype");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setReferto("brand");//TODO需要约定
		item.setIsmultiselect("N");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("price");
		item.setItemname("销售单价");
		item.setItemtype("money");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		item.setPrecision("6");
		item.setMaxlenth("30");
		itemList.add(item);
		
		item = new TemplatesItemVO();
		item.setItemkey("number");
		item.setItemname("数量");
		item.setItemtype("decimal");
		item.setIseditable("Y");
		item.setIsrequired("N");//TODO
		item.setIsdisplay("Y");
		itemList.add(item);
		
		bodyVO.setItemlist(itemList);
		bodyList.add(bodyVO);
		
		return bodyList;
	}

}
